package com.yupi.yupicturebackend.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 游戏会话实体
 *
 * @author yupi
 */
@TableName(value = "game_session")
@Data
public class GameSession implements Serializable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 游戏会话ID
     */
    private String sessionId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 游戏类型 (puzzle, spot_difference, memory, ar_filter, virtual_try_on, coloring, interactive_story)
     */
    private String gameType;

    /**
     * 游戏名称
     */
    private String gameName;

    /**
     * 游戏配置 (JSON格式)
     */
    private String gameConfig;

    /**
     * 游戏数据 (JSON格式)
     */
    private String gameData;

    /**
     * 游戏状态 (created, playing, paused, completed, abandoned)
     */
    private String status;

    /**
     * 难度等级
     */
    private String difficulty;

    /**
     * 当前分数
     */
    private Integer currentScore;

    /**
     * 最高分数
     */
    private Integer maxScore;

    /**
     * 游戏进度 (0-100)
     */
    private Integer progress;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 结束时间
     */
    private Date endTime;

    /**
     * 游戏时长（秒）
     */
    private Integer duration;

    /**
     * 使用的图片URL列表 (JSON格式)
     */
    private String imageUrls;

    /**
     * 游戏结果 (JSON格式)
     */
    private String gameResult;

    /**
     * 是否完成
     */
    private Boolean completed;

    /**
     * 完成时间
     */
    private Date completionTime;

    /**
     * 游戏记录 (JSON格式)
     */
    private String gameRecord;

    /**
     * 成就列表 (JSON格式)
     */
    private String achievements;

    /**
     * 扩展信息 (JSON格式)
     */
    private String extendInfo;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    private Integer isDelete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
